From ff38dda9a87895eef3d80d3a7b1f9f38a163bf45 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Fri, 25 Nov 2011 17:21:05 -0500 Subject: [PATCH] x11: Add gdk_x11_window_set_utf8_property A convenience function to manipulate UTF-8 X11 properties; no point in wrapping each one in individual setters. --- gdk/gdk.symbols | 1 + gdk/x11/gdkwindow-x11.c | 56 +++++++++++++++++++++++++++-------------- gdk/x11/gdkwindow-x11.h | 4 +++ 3 files changed, 42 insertions(+), 19 deletions(-) diff --git a/gdk/gdk.symbols b/gdk/gdk.symbols index e6e366b401..21f1667fc9 100644 --- a/gdk/gdk.symbols +++ b/gdk/gdk.symbols @@ -582,6 +582,7 @@ gdk_x11_window_move_to_current_desktop gdk_x11_window_set_theme_variant gdk_x11_window_set_hide_titlebar_when_maximized gdk_x11_window_set_user_time +gdk_x11_window_set_utf8_property gdk_x11_xatom_to_atom gdk_x11_xatom_to_atom_for_display #endif diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c index 688655f0e8..1ba3e24238 100644 --- a/gdk/x11/gdkwindow-x11.c +++ b/gdk/x11/gdkwindow-x11.c @@ -3087,25 +3087,19 @@ gdk_x11_window_set_user_time (GdkWindow *window, } /** - * gdk_x11_window_set_theme_variant: + * gdk_x11_window_set_utf8_property: * @window: (type GdkX11Window): a #GdkWindow - * @variant: the theme variant to export - * - * GTK+ applications can request a dark theme variant. In order to - * make other applications - namely window managers using GTK+ for - * themeing - aware of this choice, GTK+ uses this function to - * export the requested theme variant as _GTK_THEME_VARIANT property - * on toplevel windows. + * @name: Property name, will be interned as an X atom + * @value: (allow-none): Property value, or %NULL to delete * - * Note that this property is automatically updated by GTK+, so this - * function should only be used by applications which do not use GTK+ - * to create toplevel windows. - * - * Since: 3.2 + * This function modifies or removes an arbitrary X11 window + * property of type UTF8_STRING. If the given @window is + * not a toplevel window, it is ignored. */ void -gdk_x11_window_set_theme_variant (GdkWindow *window, - char *variant) +gdk_x11_window_set_utf8_property (GdkWindow *window, + const gchar *name, + const gchar *value) { GdkDisplay *display; @@ -3114,19 +3108,19 @@ gdk_x11_window_set_theme_variant (GdkWindow *window, display = gdk_window_get_display (window); - if (variant != NULL) + if (value != NULL) { XChangeProperty (GDK_DISPLAY_XDISPLAY (display), GDK_WINDOW_XID (window), - gdk_x11_get_xatom_by_name_for_display (display, "_GTK_THEME_VARIANT"), + gdk_x11_get_xatom_by_name_for_display (display, name), gdk_x11_get_xatom_by_name_for_display (display, "UTF8_STRING"), 8, - PropModeReplace, (guchar *)variant, strlen (variant)); + PropModeReplace, (guchar *)value, strlen (value)); } else { XDeleteProperty (GDK_DISPLAY_XDISPLAY (display), GDK_WINDOW_XID (window), - gdk_x11_get_xatom_by_name_for_display (display, "_GTK_THEME_VARIANT")); + gdk_x11_get_xatom_by_name_for_display (display, name)); } } @@ -3173,6 +3167,30 @@ gdk_x11_window_set_hide_titlebar_when_maximized (GdkWindow *window, } } +/** + * gdk_x11_window_set_theme_variant: + * @window: (type GdkX11Window): a #GdkWindow + * @variant: the theme variant to export + * + * GTK+ applications can request a dark theme variant. In order to + * make other applications - namely window managers using GTK+ for + * themeing - aware of this choice, GTK+ uses this function to + * export the requested theme variant as _GTK_THEME_VARIANT property + * on toplevel windows. + * + * Note that this property is automatically updated by GTK+, so this + * function should only be used by applications which do not use GTK+ + * to create toplevel windows. + * + * Since: 3.2 + */ +void +gdk_x11_window_set_theme_variant (GdkWindow *window, + char *variant) +{ + return gdk_x11_window_set_utf8_property (window, "_GTK_THEME_VARIANT", variant); +} + #define GDK_SELECTION_MAX_SIZE(display) \ MIN(262144, \ XExtendedMaxRequestSize (GDK_DISPLAY_XDISPLAY (display)) == 0 \ diff --git a/gdk/x11/gdkwindow-x11.h b/gdk/x11/gdkwindow-x11.h index 740fb08b76..bda2a58015 100644 --- a/gdk/x11/gdkwindow-x11.h +++ b/gdk/x11/gdkwindow-x11.h @@ -158,6 +158,10 @@ GType gdk_window_impl_x11_get_type (void); void gdk_x11_window_set_user_time (GdkWindow *window, guint32 timestamp); +void gdk_x11_window_set_utf8_property (GdkWindow *window, + const gchar *name, + const gchar *value); + GdkToplevelX11 *_gdk_x11_window_get_toplevel (GdkWindow *window); void _gdk_x11_window_tmp_unset_bg (GdkWindow *window, gboolean recurse); -- 2.30.2